// The Vue build version to load with the `import` command
// (runtime-only or standalone) has been set in webpack.base.conf with an alias.
import Vue from 'vue'
import MintUI from 'mint-ui'
import 'mint-ui/lib/style.css'

import App from './App'
import router from './router'

import store from './store'

import * as ajax from './requests'

const bus = new Vue()

Vue.prototype.$ajax = ajax

Vue.prototype.$bus = bus

Vue.use(MintUI)

Vue.config.productionTip = false

Vue.mixin({
  filters: {
    numberCut (n) {
      return n > 99 ? '99+' : n
    }
  }
})

router.beforeEach((to, from, next) => {
  let title = 'NB MALL'
  const firstLevelRoute = to.path.split('/')[1]
  switch (firstLevelRoute) {
    case 'home':
      title = '首页'
      break
    case 'mall':
      title = '商城'
      break
    case 'cart':
      title = '购物车'
      break
    case 'mine':
      title = '我的'
      break
    default:
      title = 'NB MALL'
      break
  }
  bus.$emit('changeTitle', title)
  // 这里还是属于router.beforeEach, 每次路由进入的时候，就做一次判断
  // 判断这个组件是否需要权限，并且是否登录，这个登录状态是store里的，每次访问路由的时候都在这里重新获取了最新的登录状态
  if (to.meta.isAuthRequired && !store.getters.isLogin) {
    // 如果需要权限并且没有登录，就跳转到登录页
    next({
      name: 'login',
      params: {
        // 这里的参数属于隐式传参，这样才能在登录成功之后返回到用户本身需要访问的页面，因为直接到Login里获取不到用户本身访问的路由，这是由于到了Login页面本来就已经重定向了
        comeFrom: to.fullPath
      }
    })
  } else {
    // 如果没有权限 或者说有权限已经登录，就直接访问
    next()
  }
})

/* eslint-disable no-new */
new Vue({
  el: '#app',
  router,
  store,
  components: { App },
  template: '<App/>'
})
